﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TOAcademias;
 
namespace DAOAcademias
{

    /*************************************
    Autor: Carlos Sánchez
    Fecha de Creación: 06/02/2011
    Descripción de la Funcionalidad: Clase que contiene metodos que serviran para dar
    soporte a los registros de la entidad Pregunta.
    **************************************/

    public class DOPregunta
    {

        DBModuloAcademiasDataContext dbml;

        public DOPregunta()
        {
            dbml = new DBModuloAcademiasDataContext();
        }

        public List<TOPregunta> obtenerTodasPregunta()
        {

            List<TOPregunta> listaPregunta = new List<TOPregunta>();
            var pregunta = (from preg in dbml.PREGUNTAs
                            select preg
                             );

            foreach (var preg in pregunta)
            {
                TOPregunta toPregunta = new TOPregunta();
                toPregunta.Codigo = preg.COD_PREGUNTA;
                toPregunta.CodEncuesta = preg.COD_ENCUESTA;
                toPregunta.Descripcion = preg.DES_PREGUNTA;
                toPregunta.Tipo = preg.TIP_PREGUNTA;

                listaPregunta.Add(toPregunta);
            }

            return listaPregunta;
        }

        public List<TOPregunta> obtenerPregunta(String codEncuesta)
         {

             List<TOPregunta> listaPregunta = new List<TOPregunta>();
             var pregunta = (from preg in dbml.PREGUNTAs
                             where preg.COD_ENCUESTA == codEncuesta 
                             select preg
                              );

             foreach (var preg in pregunta)
             {
                 TOPregunta toPregunta = new TOPregunta();
                 toPregunta.Codigo = preg.COD_PREGUNTA;
                 toPregunta.CodEncuesta = preg.COD_ENCUESTA;
                 toPregunta.Descripcion = preg.DES_PREGUNTA;
                 toPregunta.Tipo = preg.TIP_PREGUNTA;
                 
                 listaPregunta.Add(toPregunta);
             }

             return listaPregunta;
         }


        public String generarCodigoPregunta() 
         {
             List<TOPregunta> listaPregunta = obtenerTodasPregunta();

             int intAux = 0;
             int intTemp = 0;
             foreach (TOPregunta pregunta in listaPregunta)
             {
                 intTemp = Convert.ToInt32(pregunta.Codigo.Substring(2));
                 if (intTemp > intAux)
                 {
                     intAux = intTemp;
                 }
             }
             intAux = intAux + 1;
             string strCodigo = "" + intAux;
             strCodigo = "PR000".Substring(0, 5 - strCodigo.Length) + intAux;
             return strCodigo;         
         }



        public void insertarPregunta(TOPregunta toPregunta)
         {            

             PREGUNTA  preg = new PREGUNTA();
             preg.COD_PREGUNTA = generarCodigoPregunta();
             preg.COD_ENCUESTA = toPregunta.CodEncuesta;
             preg.DES_PREGUNTA = toPregunta.Descripcion;
             preg.TIP_PREGUNTA = toPregunta.Tipo;   
             
             dbml.PREGUNTAs.InsertOnSubmit(preg);
             dbml.SubmitChanges();
         }

        public void modificarPregunta(TOPregunta toPregunta)
         {
             var pregunta = (from preg in dbml.PREGUNTAs
                             where preg.COD_PREGUNTA == toPregunta.Codigo 
                             select preg).Single();

             pregunta.COD_PREGUNTA = toPregunta.Codigo;
             pregunta.COD_ENCUESTA = toPregunta.CodEncuesta;
             pregunta.DES_PREGUNTA = toPregunta.Descripcion;
             pregunta.TIP_PREGUNTA = toPregunta.Tipo;    
   
             dbml.SubmitChanges();

         }

        public void eliminarPregunta(String Codigo)
        {
            var pregunta = (from preg in dbml.PREGUNTAs
                            where preg.COD_PREGUNTA == Codigo
                            select preg).Single();

            DOOpcionRespuesta doOpcionRespuesta = new DOOpcionRespuesta();
            doOpcionRespuesta.eliminarOpcionRespuestaxPregunta(Codigo);

            dbml.PREGUNTAs.DeleteOnSubmit(pregunta);
            dbml.SubmitChanges();

        }

        public void eliminarPreguntaxEncuesta(String Codigo)
        {
            var preguntas = (from pre in dbml.PREGUNTAs
                               where pre.COD_ENCUESTA == Codigo
                               select pre);

            DOOpcionRespuesta doOpcionRespuesta = new DOOpcionRespuesta();
            foreach (var pre in preguntas)
            {
                doOpcionRespuesta.eliminarOpcionRespuestaxPregunta(pre.COD_PREGUNTA);
                dbml.PREGUNTAs.DeleteOnSubmit(pre);
            }

            dbml.SubmitChanges();

        }




    }
}
